package com.example.entity.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Dynamic;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@TableName("ordr") // 对应数据库表名
@Document(
        indexName = "ordr_index",
        createIndex = true, // 自动创建索引
        dynamic = Dynamic.TRUE // 关键：开启动态映射（默认值，可省略）
) // ES索引名
//@SyncConfig(indexName = "order_index") // 可选：类级别配置
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Ordr {
    @Id
    @TableId(type = IdType.AUTO) // 自增主键，对应数据库 AUTO_INCREMENT
    @Field(index = false,type = FieldType.Long,store = true) // ES字段配置
    private Long id;

//    @TableField("usrname") //如果数据库中命名usrname，但这个程序中命名username
    //String类型中，区分明显（例如商品描述、文章内容等类似关键字可分类的），用Text
    //只有Text适合且推荐analyzer分词，其他的不能或不推荐分词
    @Field(index=true,type=FieldType.Text,store=true,analyzer="ik_smart",searchAnalyzer="ik_smart") // ES字段配置
    private String name;

//    //String类型中，区分不明显（例如用户ID、订单状态等类似数字和字母字符拼接而成的），用Keyword
//    @Field(index=true,type=FieldType.Keyword,store=true) // ES字段配置
//    private String uid;

    @Field(index=true,type=FieldType.Integer,store=true) // ES字段配置
    private Integer age;
}
